#ifndef ANA_H
#define ANA_H
#include"common.h"
#include <QMainWindow>

#ifdef QT_NO_DEBUG //release
const QString myfilename = "./project.json";
const QString myqss = "./AnaFich.qss";
#else
//const QString myfilename = "/Users/hideyoshi/Desktop/codes/AnaFich/project.json";
const QString myfilename = "E:\\gitee\\AnaFich\\project.json";
//const QString myfilename = "/Users/hideyoshi/Desktop/codes/AnaFich/AnaFich.qss";
//const QString myqss = "E:\\gitee\\AnaFich\\AnaFich.qss";
#endif

QT_BEGIN_NAMESPACE
namespace Ui { class Ana; }
QT_END_NAMESPACE

class Ana : public QMainWindow
{
    Q_OBJECT

public:
    Ana(QWidget *parent = nullptr);
    ~Ana();
    void init();
    void init_temp(); //初始化这些temp变量
    QString readJsonfile2string(QString filename); //读文件转QString

    QJsonObject readJsonfile2Object(QString filename); //读文件转QJsonObject

    QString Json2QString(QJsonObject json);

    //jsonObject 是键值对的键，target是值
    bool JsonArrayContain(QJsonArray array,QString jsonObject,QString target); //判断array里面是否有json对象存在

    QJsonArray readJsonObjectReturnArray(QJsonObject object,QString jsonkey); //传入jsonobject和键名，返回对应的数组，但一定要是json数组
private slots:


    void on_exit_clicked();

    void on_add_clicked();

    void on_pushButton_return_clicked();

    void on_pushButton_save_clicked();

    void on_main_delete_clicked();

    void initTree(); //生成treeview


    void on_pushButton_changeProj_clicked();

    void on_pushButton_file_return_clicked();

    void on_pushButton_addProject_file_clicked();

    void initTree_file(QString projectname,QJsonArray thisProject); //文件树窗口初始化

    void on_treeView_projectList_clicked(const QModelIndex &index);

    void on_treeView_nowProject_clicked(const QModelIndex &index);

    void init_tableview_nowfile(QString nowfile); //初始化项目文件配置的细则

    void on_pushButton_addfile_clicked();

    void on_pushButton_file_save_clicked();

    bool ifIsFullDigital(QString str)
    {
        bool flag = false;
        double d = -1;
        d = str.toDouble(&flag);
        return flag;
    }

    bool iflastIsOk();

    void on_PostSlov_clicked();

    void on_pushButton_slov_clicked();

    void post_solve(QString text);

    void on_treeView_projectList_doubleClicked(const QModelIndex &index);


    void on_FileSlov_clicked();

    void show_author();

    void on_pushButton_divfile_clicked();

    void on_pushButton_file_insert_clicked();

private:
    Ui::Ana *ui;
    QJsonArray temparrayfile; //json文件的file数组
    QJsonObject tempobjectproject;//对应Json文件的project键

    QJsonObject tempfilename; //json文件的filename键
    QString nowfilename; //鼠标选中的当前项目内的文件配置名
    QJsonArray tempdetail; //json文件的detail数组

    QStandardItemModel *fileModel; //管理项目配置

    QStandardItemModel *mainModel; //管理主界面tableview的显示

    QStringList type = {"number","string","hex"}; //QCombobox 需要展示的类型

    QString post; //报文

    int flag; //为0代表选中了项目或其他，为1代表选中了正确的配置文件

    QStringList name,desc,length,types; //方便后续调用


};
#endif // ANA_H
